package br.com.ravi.deposito.vo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import br.com.ravi.deposito.dao.GenericDAO;
import br.com.ravi.deposito.dao.HibernateModel;

@Table(name="CADUSUARIO")
@Entity(name="CADUSUARIO")
/**
 * 
 * @author Rafael Ingaramo
 *
 */
public class UserVO extends HibernateModel implements Serializable {
	private static final long serialVersionUID = 1L;
	private long codigoUsuario;
	private String descricaoUsuario;
	private String nome;
	private String senha;
	private String email;
	private Boolean usuarioAdmin;
	private Boolean usuarioAtivo;
	private Boolean solicitarRecadastroSenha;
	private GenericDAO<UserVO> dao;

	@Override
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idcadusuario", nullable=false, insertable=true, updatable=false)
	public Long getId() {
		return super.getId();
	}
	@Column(name="cdg_usuario", nullable=false)
	public long getCodigoUsuario() {
		return codigoUsuario;
	}
	public void setCodigoUsuario(long codigoUsuario) {
		this.codigoUsuario = codigoUsuario;
	}
	@Column(name="dcr_usuario", nullable=false)
	public String getDescricaoUsuario() {
		return descricaoUsuario;
	}
	public void setDescricaoUsuario(String descricaoUsuario) {
		this.descricaoUsuario = descricaoUsuario;
	}
	@Column(name="dcr_nome", nullable=false)
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	@Column(name="dcr_senha", nullable=false)
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	@Column(name="dcr_email", nullable=false)
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Column(name="flb_admin", nullable=false)
	public Boolean getUsuarioAdmin() {
		return usuarioAdmin;
	}
	public void setUsuarioAdmin(Boolean usuarioAdmin) {
		this.usuarioAdmin = usuarioAdmin;
	}
	@Column(name="flb_ativo", nullable=false)
	public Boolean getUsuarioAtivo() {
		return usuarioAtivo;
	}
	public void setUsuarioAtivo(Boolean usuarioAtivo) {
		this.usuarioAtivo = usuarioAtivo;
	}
	
	@Override
	@Transient
	public GenericDAO<?> getDAO() {
		if (this.dao == null) {
			this.dao = new GenericDAO<UserVO>(UserVO.class);
		}
		
		return this.dao;
	}
	@Column(name="flb_solicitar_recadastro")
	public Boolean getSolicitarRecadastroSenha() {
		return solicitarRecadastroSenha;
	}
	public void setSolicitarRecadastroSenha(Boolean solicitarRecadastroSenha) {
		this.solicitarRecadastroSenha = solicitarRecadastroSenha;
	}
}